using System;
using System.Data;
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessRules;
using DataAccess;
using Common;

public partial class EjecucionAvance : PageBase
{
    #region IdentificadorAccId

    public string IdentificadorAccId
    {
        get { return (ViewState["IdentificadorAccId"] == null ? string.Empty : ViewState["IdentificadorAccId"].ToString()); }
        set { ViewState["IdentificadorAccId"] = value; }
    }

    #endregion

    #region IdentificadorMetId

    public string IdentificadorMetId
    {
        get { return (ViewState["IdentificadorMetId"] == null ? string.Empty : ViewState["IdentificadorMetId"].ToString()); }
        set { ViewState["IdentificadorMetId"] = value; }
    }

    #endregion

    #region IdentificadorSasId

    public string IdentificadorSasId
    {
        get { return (ViewState["IdentificadorSasId"] == null ? string.Empty : ViewState["IdentificadorSasId"].ToString()); }
        set { ViewState["IdentificadorSasId"] = value; }
    }

    #endregion

    #region IdentificadorSacId

    public string IdentificadorSacId
    {
        get { return (ViewState["IdentificadorSacId"] == null ? string.Empty : ViewState["IdentificadorSacId"].ToString()); }
        set { ViewState["IdentificadorSacId"] = value; }
    }

    #endregion

    #region StrPlnId

    public string StrPlnId
    {
        get
        {
            if (ViewState["strPlnId"] != null)
                return ViewState["strPlnId"].ToString();
            else
                return "";
        }
        set { ViewState["strPlnId"] = value; }
    }




    #endregion

    #region Propiedades

    public string IdentificadorPszeId
    {
        get { return (ViewState["IdentificadorPszeId"] == null ? string.Empty : ViewState["IdentificadorPszeId"].ToString()); }
        set { ViewState["IdentificadorPszeId"] = value; }
    }

    public string IdentificadorPszId
    {
        get { return (ViewState["IdentificadorPszId"] == null ? string.Empty : ViewState["IdentificadorPszId"].ToString()); }
        set { ViewState["IdentificadorPszId"] = value; }
    }

    #endregion

    #region Page_Load

    protected void Page_Load(object sender, EventArgs e)
    {
        WccAcciones1.AddEnabledDuringCallBack = false;
        WccAcciones1.AddTextDuringCallBack = "Guardando... Por favor esperar!!!";
        WccAcciones1.UpdateEnabledDuringCallBack = false;
        WccAcciones1.UpdateTextDuringCallBack = "Guardando... Por favor espere!!!";

        WccAcciones1.Permisos = Permisos;
        if (!Page.IsPostBack)
        {
            TraerContextItems();
            cargarCamposEncabezado();
            cargarDepartamentos();
            if (IdentificadorPszId != "" && IdentificadorPszeId != "")
            {
                //txtIdentificador.Text = IdentificadorPszId;
                //entra a actualizar
                cargarCampos();
                WccAcciones1.Accion = Utilidad.Acciones.Actualizar;
                //gridImagenes.Enabled = true;
                //cargarImagenes();
            }
            else
            {
                WccAcciones1.Accion = Utilidad.Acciones.Adicionar;
            }
        }

    }

    #endregion

    #region Cargar Departamentos

    private void cargarDepartamentos()
    {
        BasZonasGeograficas objBasZonasGeograficas = new BasZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
        BasZonasGeograficasData objBasZonasGeograficasData = objBasZonasGeograficas.ConsultarZonasGeograficasDepartamento();
        ddldepartamentosAnthem.DataSource = objBasZonasGeograficasData;
        ddldepartamentosAnthem.DataValueField = BasZonasGeograficasData.ZON_ID_FIELD;
        ddldepartamentosAnthem.DataTextField = BasZonasGeograficasData.ZON_NOMBRE_FIELD;
        ddldepartamentosAnthem.DataBind();
        ddldepartamentosAnthem.Items.Insert(0, new ListItem("", ""));
        ddldepartamentosAnthem.SelectedIndex = 0;

    }

    #endregion

    #region Cargar Municipios

    public void cargarMunicipios(string strZonIdPadre)
    {
        BasZonasGeograficas objBasZonasGeograficas = new BasZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
        BasZonasGeograficasData objBasZonasGeograficasData = objBasZonasGeograficas.ConsultarZonasGeograficasPadreZonId(strZonIdPadre);
        ddlMunicipiosAnthem.DataSource = objBasZonasGeograficasData;
        ddlMunicipiosAnthem.DataValueField = BasZonasGeograficasData.ZON_ID_FIELD;
        ddlMunicipiosAnthem.DataTextField = BasZonasGeograficasData.ZON_NOMBRE_FIELD;
        ddlMunicipiosAnthem.DataBind();


        ddlMunicipiosAnthem.UpdateAfterCallBack = true;
        //LimpiarPlanPrograma();
    }

    #endregion

    #region TraerContextItems

    private void TraerContextItems()
    {
        if (Context.Items["plnId"] != null)
            StrPlnId = Context.Items["plnId"].ToString();
        if (Context.Items["IdentificadorAccId"] != null)
            IdentificadorAccId = Context.Items["IdentificadorAccId"].ToString();
        if (Context.Items["IdentificadorSasId"] != null)
            IdentificadorSasId = Context.Items["IdentificadorSasId"].ToString();
        if (Context.Items["IdentificadorSacId"] != null)
            IdentificadorSacId = Context.Items["IdentificadorSacId"].ToString();
        if (Context.Items["IdentificadorPszId"] != null)
            IdentificadorPszId = Context.Items["IdentificadorPszId"].ToString();
        if (Context.Items["IdentificadorPszeId"] != null)
            IdentificadorPszeId = Context.Items["IdentificadorPszeId"].ToString();
        
        if (Context.Items["IdentificadorMetId"] != null)
            IdentificadorMetId = Context.Items["IdentificadorMetId"].ToString();

    
    }


    #endregion

    #region cargarCampos

    private void cargarCampos()
    {
        SigProgramaZonasGeograficasEjecucion objSigProgramaZonasGeograficasEjecucion = new SigProgramaZonasGeograficasEjecucion(ConfigurationManager.AppSettings["Conn"]);
        SigProgramaZonasGeograficasEjecucionData objSigProgramaZonasGeograficasEjecucionData = objSigProgramaZonasGeograficasEjecucion.ConsultarProgramaZonasGeograficasEjecucionSpzeId(IdentificadorPszeId);
        

        try
        {


            if (objSigProgramaZonasGeograficasEjecucionData != null)
            {
                DataRow fila = objSigProgramaZonasGeograficasEjecucionData.Rows[0];
                txtCantidad.Text = fila[SigProgramaZonasGeograficasEjecucionData.PRG_CANTIDAD_FIELD].ToString();
                txtDescripcion.Text = fila[SigProgramaZonasGeograficasData.PRG_DESCRIPCION_FIELD].ToString();
                ddlanos.SelectedValue = fila[SigProgramaZonasGeograficasEjecucionData.PRG_ANO_FIELD].ToString();
                txtObsevaciones.Text = fila[SigProgramaZonasGeograficasEjecucionData.PRG_OBSERVACIONES_FIELD].ToString();
                txtValor.Text = fila[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD].ToString();
                txtPoblacionBeneficiada.Text = fila[SigProgramaZonasGeograficasEjecucionData.PRG_POBLACION_BENEFICIADA_FIELD].ToString();
                //primero tiene qeu cargar los municipios con el departamento
                string zonidDep = fila[SigProgramaZonasGeograficasData.ZON_ID_FIELD].ToString().Substring(0, 2);
                if (zonidDep != "")
                {
                    cargarMunicipios(zonidDep);
                    ddlMunicipiosAnthem.SelectedValue = fila[SigProgramaZonasGeograficasData.ZON_ID_FIELD].ToString();
                    ddldepartamentosAnthem.SelectedValue = zonidDep;
                }
            }
        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message;
        }
    }

    #endregion

    #region lnkPlanPrograma_Click

    protected void lnkPlanPrograma_Click(object sender, EventArgs e)
    {
        crearContextItems();
        Server.Transfer("SigPlanProgramaAvance.aspx?SSM_ID=20", true);
    }

    #endregion

    #region WccAcciones1_Add_OnClick

    protected void WccAcciones1_Add_OnClick(object sender, ImageClickEventArgs e)
    {
        Adicionar();
    }

    #endregion

    #region Adicionar

    private void Adicionar()
    {
        SigProgramaZonasGeograficasEjecucion objSigProgramaZonasGeograficasEjecucion = new SigProgramaZonasGeograficasEjecucion(ConfigurationManager.AppSettings["Conn"]);
        SigProgramaZonasGeograficasEjecucionData objSigProgramaZonasGeograficasEjecucionData = new SigProgramaZonasGeograficasEjecucionData();
        try
        {
            DataRow fila = objSigProgramaZonasGeograficasEjecucionData.NewRow();

            fila[SigProgramaZonasGeograficasEjecucionData.SPZ_ID_FIELD] = IdentificadorPszId;

            if (txtCantidad.Text != "")
            {
                fila[SigProgramaZonasGeograficasData.PRG_CANTIDAD_FIELD] = txtCantidad.Text;
            }
            fila[SigProgramaZonasGeograficasEjecucionData.PRG_DESCRIPCION_FIELD] = txtDescripcion.Text;
            if (ddlanos.SelectedValue != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_ANO_FIELD] = ddlanos.SelectedValue;
            }
            fila[SigProgramaZonasGeograficasEjecucionData.PRG_OBSERVACIONES_FIELD] = txtObsevaciones.Text;
            if (txtValor.Text != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD] = Convert.ToDecimal(txtValor.Text);
            }
            if (txtPoblacionBeneficiada.Text != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_POBLACION_BENEFICIADA_FIELD] = Convert.ToDecimal(txtPoblacionBeneficiada.Text);
            }
            fila[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD] = ddlMunicipiosAnthem.SelectedValue;
            objSigProgramaZonasGeograficasEjecucionData.Add(fila);
            decimal decSalida = objSigProgramaZonasGeograficasEjecucion.AdicionarProgramaZonasGeograficasEjecucion(objSigProgramaZonasGeograficasEjecucionData);
            if (decSalida > 0)
            {
                SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
                objSigProgramaZonasGeograficas.ActualizarProgramasZonasGeograficasEstado(IdentificadorPszId, EnumHelper.GetDescription(Utilidad.Estados.Inactivo));
                IdentificadorPszeId = decSalida.ToString();
                lblMensaje.Text = "Registro Adicionado Correctamente";
                WccAcciones1.Accion = Utilidad.Acciones.Actualizar;
                WccAcciones1.AddVisible = false;
                WccAcciones1.UpdateVisible = true;
                WccAcciones1.DeleteVisible = true;

            }
            else
            {
                lblMensaje.Text = "Ocurrio un error por favor contactar al administrador";
            }
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
            //ExceptionManager.Publish(ex);
            //this.MostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message);
        }
    }

    #endregion

    #region Actualizar

    private void Actualizar()
    {
        SigProgramaZonasGeograficasEjecucion objSigProgramaZonasGeograficasEjecucion = new SigProgramaZonasGeograficasEjecucion(ConfigurationManager.AppSettings["Conn"]);
        SigProgramaZonasGeograficasEjecucionData objSigProgramaZonasGeograficasEjecucionData = new SigProgramaZonasGeograficasEjecucionData();
        try
        {
            DataRow fila = objSigProgramaZonasGeograficasEjecucionData.NewRow();

            fila[SigProgramaZonasGeograficasEjecucionData.SPZ_ID_FIELD] = IdentificadorPszId;
            fila[SigProgramaZonasGeograficasEjecucionData.SPZE_ID_FIELD] = IdentificadorPszeId;

            if (txtCantidad.Text != "")
            {
                fila[SigProgramaZonasGeograficasData.PRG_CANTIDAD_FIELD] = txtCantidad.Text;
            }
            fila[SigProgramaZonasGeograficasEjecucionData.PRG_DESCRIPCION_FIELD] = txtDescripcion.Text;
            if (ddlanos.SelectedValue != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_ANO_FIELD] = ddlanos.SelectedValue;
            }
            fila[SigProgramaZonasGeograficasEjecucionData.PRG_OBSERVACIONES_FIELD] = txtObsevaciones.Text;
            if (txtValor.Text != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_VALOR_EJECUCION_FIELD] = Convert.ToDecimal(txtValor.Text);
            }
            if (txtPoblacionBeneficiada.Text != "")
            {
                fila[SigProgramaZonasGeograficasEjecucionData.PRG_POBLACION_BENEFICIADA_FIELD] = Convert.ToDecimal(txtPoblacionBeneficiada.Text);
            }
            fila[SigProgramaZonasGeograficasEjecucionData.ZON_ID_FIELD] = ddlMunicipiosAnthem.SelectedValue;
            objSigProgramaZonasGeograficasEjecucionData.Add(fila);
            decimal decSalida = objSigProgramaZonasGeograficasEjecucion.ActualizarProgramaZonasGeograficasEjecucion(objSigProgramaZonasGeograficasEjecucionData);
            if (decSalida > 0)
            {
                SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
                objSigProgramaZonasGeograficas.ActualizarProgramasZonasGeograficasEstado(IdentificadorPszId, EnumHelper.GetDescription(Utilidad.Estados.Inactivo));
                IdentificadorPszeId = decSalida.ToString();
                lblMensaje.Text = "Registro Actualizado Correctamente";
                WccAcciones1.Accion = Utilidad.Acciones.Actualizar;

            }
            else
            {
                lblMensaje.Text = "Ocurrio un error por favor contactar al administrador";
            }
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message;
            //ExceptionManager.Publish(ex);
            //this.MostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message);
        }
    }

    #endregion

    #region ddldepartamentosAnthem_SelectedIndexChanged

    protected void ddldepartamentosAnthem_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddldepartamentosAnthem.SelectedValue != "")
        {
            cargarMunicipios(ddldepartamentosAnthem.SelectedValue);
        }
    }

    #endregion

    #region WccAcciones1_Delete_OnClick

    protected void WccAcciones1_Delete_OnClick(object sender, ImageClickEventArgs e)
    {
        delete();
        WccAcciones1.Accion = Utilidad.Acciones.Adicionar;
        limpiarCampos();
        WccAcciones1.AddVisible = true;
        WccAcciones1.UpdateVisible = false;
        WccAcciones1.DeleteVisible = false;
        
    }

    #endregion

    #region limpiarCampos

    private void limpiarCampos()
    {
        txtCantidad.Text = "";
        txtDescripcion.Text = "";
        ddlanos.SelectedValue = "0";
        txtObsevaciones.Text = "";
        txtValor.Text = "";
        txtPoblacionBeneficiada.Text = "";
        ddldepartamentosAnthem.SelectedValue = "0";
        ddlMunicipiosAnthem.SelectedValue = "0";
        txtCantidad.AutoUpdateAfterCallBack = true;
        txtDescripcion.AutoUpdateAfterCallBack = true;
        ddlanos.AutoUpdateAfterCallBack = true;
        txtObsevaciones.AutoUpdateAfterCallBack = true;
        txtValor.AutoUpdateAfterCallBack = true;
        txtPoblacionBeneficiada.AutoUpdateAfterCallBack = true;
        ddldepartamentosAnthem.AutoUpdateAfterCallBack = true;
        ddlMunicipiosAnthem.AutoUpdateAfterCallBack = true;
        WccAcciones1.Accion = Utilidad.Acciones.Adicionar;
    }

    #endregion

    #region delete

    private void delete()
    {
        try
        {
            SigProgramaZonasGeograficasEjecucion objSigProgramaZonasGeograficasEjecucion =
                new SigProgramaZonasGeograficasEjecucion(ConfigurationManager.AppSettings["Conn"]);
            objSigProgramaZonasGeograficasEjecucion.EliminarProgramasZonasGeograficasEjecucion(IdentificadorPszeId);
            lblMensaje.Text = "Registro Eliminados";
            SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
            objSigProgramaZonasGeograficas.ActualizarProgramasZonasGeograficasEstado(IdentificadorPszId, EnumHelper.GetDescription(Utilidad.Estados.Inactivo));
        }
        catch (Exception ex)
        {

            lblMensaje.Text = ex.Message;
        }
    }

    #endregion

    #region WccAcciones1_Update_OnClick

    protected void WccAcciones1_Update_OnClick(object sender, ImageClickEventArgs e)
    {
        Actualizar();
    }

    #endregion

    #region crearContextItems

    private void crearContextItems()
    {
        try
        {
            
            Context.Items["plnId"] = StrPlnId;
            Context.Items["IdentificadorSasId"] = IdentificadorSasId;
            Context.Items["IdentificadorSacId"] = IdentificadorSacId;
            Context.Items["IdentificadorAccId"] = IdentificadorAccId;
            Context.Items["IdentificadorMetId"] = IdentificadorMetId;
            Context.Items["IdentificadorPszId"] = IdentificadorPszId;
            Context.Items["IdentificadorPszeId"] = IdentificadorPszeId;
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.ToString();
        }
    }

    #endregion

    #region btnRegresar_Click

    protected void btnRegresar_Click(object sender, ImageClickEventArgs e)
    {
        crearContextItems();
        Server.Transfer("EjecucionAvanceListado.aspx?SSM_ID=20", true);
    }

    #endregion

    #region LnkCofinanciacion_Click

    protected void LnkCofinanciacion_Click(object sender, EventArgs e)
    {
        crearContextItems();
        Server.Transfer("CofinanciacionAvanceListado.aspx?SSM_ID=20", true);
    }

    #endregion

    protected void WccAcciones1_Publish_OnClick(object sender, ImageClickEventArgs e)
    {
        SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
        objSigProgramaZonasGeograficas.ActualizarProgramasZonasGeograficasEstado(IdentificadorPszId, EnumHelper.GetDescription(Utilidad.Estados.Publicado));
    }

    #region cargarCamposEncabezado

    private void cargarCamposEncabezado()
    {
        try
        {
            SigPlanAccion objSigPlanAccion = new SigPlanAccion(ConfigurationManager.AppSettings["Conn"]);
            SigPlanAccionData objSigPlanAccionData = objSigPlanAccion.ConsultarPnlId(Convert.ToDecimal(StrPlnId));
            if (objSigPlanAccionData != null)
            {
                DataRow fila = objSigPlanAccionData.Rows[0];
                lblDependencia.Text = fila[SigPlanAccionData.DEP_NOMBRE_FIELD].ToString();
                lblDescripcionRubro.Text = fila[SigPlanAccionData.PLN_NOMBRE_FIELD].ToString();
                decimal decVAlor = Convert.ToDecimal(fila[SigPlanAccionData.PLN_VALOR_APROPIACION_FIELD].ToString());
                lblValorApropiacion.Text = decVAlor.ToString("C");
            }

            SigAccion objSigAccion = new SigAccion(ConfigurationManager.AppSettings["Conn"]);
            SigAccionData objSigAccionData = objSigAccion.ConsultarAccionAccID(IdentificadorAccId);
            //---------------------
            //Cargar datos Accion -
            //---------------------
            if (objSigAccionData != null)
            {
                DataRow filaAccion = objSigAccionData.Rows[0];
                lblAccion.Text = filaAccion[SigAccionData.ACC_DESCRIPCION_FIELD].ToString();

                decimal decValor = Convert.ToDecimal(filaAccion[SigAccionData.ACC_VALOR_FIELD].ToString());
                lblValorAccion.Text = decValor.ToString("C");

            }

            //---------------------//
            //Cargar datos Metas  //
            //---------------------//

            SigAccionMeta objBR = new SigAccionMeta(ConfigurationManager.AppSettings["Conn"]);
            SigAccionMetaData objSigAccionMetaData = objBR.ConsultarAccionMetaMetId(Convert.ToDecimal(IdentificadorMetId));

            if (objSigAccionMetaData != null)
            {
                DataRow objRow = objSigAccionMetaData.Rows[0];
                lblMeta.Text = objRow[SigAccionMetaData.MET_NOMBRE_FIELD].ToString();
                lblUnidad.Text = objRow[SigAccionMetaData.MET_UNIDAD_MEDIDA_FIELD].ToString();
                lblProgramado.Text = objRow[SigAccionMetaData.MET_CANTIDAD_FIELD].ToString();

                //if (objRow[SigAccionMetaData.MET_FECHA_FIELD] != null && objRow[SigAccionMetaData.MET_FECHA_FIELD].ToString() != "")
                //    calFecha.SelectedValue = Convert.ToDateTime(objRow[SigAccionMetaData.MET_FECHA_FIELD].ToString());
            }
        }
        catch (Exception ex)
        {

            lblMensaje.Visible = true;
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
        }

    }

    #endregion
    protected void lblDescripcionRubro_Click(object sender, EventArgs e)
    {
        crearContextItems();
        Server.Transfer("EjecucionPresupuestalPlanAccionEje.aspx?SSM_ID=20", true);
    }
    protected void lblAccion_Click(object sender, EventArgs e)
    {
        crearContextItems();
        Server.Transfer("PlanAccionListadoEje.aspx?SSM_ID=20", true);
    }
    protected void lblMeta_Click(object sender, EventArgs e)
    {
        crearContextItems();
        Server.Transfer("MetasListadoEje.aspx?SSM_ID=20", true);
    }
}
